/*
 * Gavin Greene
 * 5/26/2011
 * 
 * The Business rule is meant to be a Superclass to all future business rules.
 * Another class will call and apss in the appropriate information, and an inheriting
 * class will implement a way to check a given rule.
 */
package businessRule;

import java.util.Collection;
import java.util.List;
import data.ClassSlot;
/**
 * 
 * @author Gavin Greene
 * @version 5/26/2011
 * 
 * This class holds the method signature for the main method in the business rule class. 
 * It is meant to be used as A superClass to all business rules classes. Future classes will Implement the
 * CheckRule class, allowing a Schedule checking or generating program to create a List of BusinessRule Objects, then 
 * check each one individually.
 *
 */
public abstract class BizRule {
	/**
	 * @pre a non-null Collection is passed in.
	 * @pre A non-null List<ClassSlot> class is passed in
	 * 
	 * @post  A List will be passed in, and if the business rule is Violated, it will be written to, 
	 * otherwise no action will  be taken
     *
	 * 
	 * This Method will check the rule that a particular class implements.
	 *
	 * @param theSchedule the Schedule to check 
	 * @param BusinessRulesViolated the List of business rules to be ouputted to.
	 */
	public abstract void CheckRule(final List<ClassSlot> theSchedule,
			Collection<BusinessRuleViolation> BusinessRulesViolated);
	public abstract String getName();
	
}
